A lookup is a data search performed within a predefined table of values. Lookups are performed frequently in the process of handling network traffic. For example, an access control module (ACM) may perform lookups in relation to an access list (AL), which is sometimes referred to as an access control list (ACL). In a lookup, information from incoming packets, such as header information, is used to compare against information stored in a lookup table to determine how the packet should be handled. In the process of handling network traffic, a lookup may entail using information from one or more protocol layers, where the layers are defined by the International Standards Organization (ISO) in the Open System Interconnection (OSI) model.
Lookup tables can be implemented in network nodes using memory such as content addressable memory (CAM), pseudo-CAM (e.g., static random access memory (SRAM) that, together with a finite state machine, emulates operation of CAM), embedded microengines that provide programmable lookups under software control, or a combination of methods. In order to implement larger lookup tables, more memory is needed. Moreover, the lookup tables are constantly updated in operation. Accordingly, a control module must frequently add new entries to the lookup tables and remove old entries. Since writing to memory consumes memory resources, updating lookup tables can be relatively costly in terms of processing resources. Nevertheless, frequent updates are often required to provide network efficiency and reliability.
To further improve reliability in network systems, “hitless” restart mechanisms have been developed. The term “hitless” is used in the field to describe a system that does not drop any packets during a system interruption (e.g., hardware failure, software failure, software update, system restart, etc.). When routing software associated with a network device goes offline due to hardware failures, intentional updating of the software, or other reasons, hitless restart mechanisms ensure that the network device is offline for a minimum amount of time in order to prevent any packets from being dropped. However, when the routing software restarts, the network device must repopulate tables that are used by the routing software. It is generally believed that the memory resource cost associated with repopulating the tables is well worth the improved reliability gained from hitless restart mechanisms. However, when repopulating the tables, systems typically read from hardware tables to determine the contents. This is a resource intensive operation. Accordingly, it would be advantageous if memory resource costs could be reduced, particularly the reading from hardware tables.
Because writing to memory should be avoided where possible, what is needed is an efficient technique for preventing the rewrite of an entire lookup table even after the lookup table fails to receive lookup table updates for a period of time.